home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2001 / MacHack 2001.toast / pc / Sessions / Traut / ZStrings / Source / CrossPlatform / ZStringTool.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-06-23  |  3.2 KB  |  154 lines

  1. /*==================================================================
  2.     File:        ZStringTool.h
  3.     
  4.     Contains:    Tool-related code for building ZString override
  5.                 libraries, etc.
  6.  
  7.     Written by:    Eric Traut
  8.     
  9.     Copyright:    2000 Connectix Corporation
  10. ==================================================================*/
  11.  
  12. #ifndef __ZSTRINGTOOL__
  13. #define __ZSTRINGTOOL__
  14.  
  15. #include "ZStringData.h"
  16. #include "ZStringDictionary.h"
  17. #include "ZStringParser.h"
  18. #include "ZString.h"
  19.  
  20. #include <stdio.h>
  21.  
  22. typedef Z_UInt16 ZStringToolState;
  23. enum
  24. {
  25.     kStringUnique                = 0x0000,
  26.     kStringDuplicate            = 0x0001,
  27.     kStringBadlyFormed            = 0x0002,
  28.     kStringHasHighASCII            = 0x0004,
  29.  
  30.     kStringLimitWarning            = 0x0010,
  31.     kStringChangeWarning        = 0x0020,
  32.     kStringBreakWarning            = 0x0040,
  33.     kStringPossibleTagWarning    = 0x0080,
  34.  
  35.     kStringAdded                = 0x0100,
  36.     kStringDeleted                = 0x0200,
  37.     kStringModifiedNew            = 0x0400,
  38.     kStringModifiedOld            = 0x0800,
  39.  
  40.     kAllStringWarnings            = kStringHasHighASCII | kStringChangeWarning | kStringLimitWarning | kStringBreakWarning | kStringPossibleTagWarning,
  41.     kAllStringErrors            = kStringDuplicate | kStringBadlyFormed  | kStringAdded | kStringDeleted | kStringModifiedOld | kStringModifiedNew
  42. };
  43.  
  44. class ZToolEntry
  45. {
  46.     public:
  47.         ZStringParseInfo        mParseInfo;
  48.         ZStringToolState        mStringState;
  49.         ZToolEntry *            mNext;
  50. };
  51.  
  52. /*==================================================================
  53.     ZStringTool
  54. ==================================================================*/
  55.  
  56. class ZStringTool
  57. {
  58.     public:
  59.         // Construction & Destruction
  60.         ZStringTool();
  61.         
  62.         virtual
  63.         ~ZStringTool();
  64.  
  65.         ZToolEntry *
  66.         LookUpString(
  67.             const ZStringParseInfo &    inParseInfo);
  68.  
  69.         void
  70.         RegisterString(
  71.             const ZStringParseInfo &    inParseInfo,
  72.             ZStringToolState            inState);
  73.  
  74.         void
  75.         ProcessBinaries(
  76.             const char *                inNewStart,
  77.             Z_UInt32                    inNewLength,
  78.             const char *                inOldStart,
  79.             Z_UInt32                    inOldLength,
  80.             const ZToolOptions &        inOptions);
  81.  
  82.  
  83.         Z_Boolean
  84.         PrintReport(
  85.             FILE *                        inFile,
  86.             const ZToolOptions &        inOptions);
  87.         
  88.         Z_Boolean
  89.         CreateOverrideDictionary(
  90.             FILE *                        inFile);
  91.         
  92.         Z_Boolean
  93.         CreateOverrideDictionary(
  94.             char * &                    outDictionary,
  95.             Z_UInt32 &                    outLength);
  96.         
  97.     private:
  98.         char *
  99.         AddEntryToOverrideDictionary(
  100.             char *                        inOutputPtr,
  101.             const ZToolEntry &            inEntry);
  102.  
  103.         void
  104.         ProcessBinary(
  105.             const void *                inStart,
  106.             Z_UInt32                    inLength,
  107.             ZStringToolState            inInitialState,
  108.             const ZToolOptions &        inOptions);
  109.  
  110.         void
  111.         PrintEntry(
  112.             ZToolEntry &                inEntry,
  113.             FILE *                        inFile,
  114.             Z_Boolean                    inPrintWarnings);
  115.  
  116.         Z_Boolean
  117.         NamedStringsMatch(
  118.             const ZStringParseInfo &    inString1,
  119.             const ZStringParseInfo &    inString2);
  120.  
  121.         Z_Boolean
  122.         CreateSortedStringList(
  123.             Z_Boolean                    inCategorizeOutput);
  124.  
  125.         static int
  126.         CompareToolEntries(
  127.             Z_UInt16                    inState,
  128.             const void *                inNode1,
  129.             const void *                inNode2);
  130.  
  131.         static int
  132.         CompareCategoryFunction(
  133.             const void *                inNode1,
  134.             const void *                inNode2);
  135.  
  136.         static int
  137.         CompareStringFunction(
  138.             const void *                inNode1,
  139.             const void *                inNode2);
  140.  
  141.         ZToolEntry *            mZStringToolHash[kZDictionaryHashEntries];
  142.         ZToolEntry **            mSortedList;
  143.         Z_UInt32                mStringRegisterCount;
  144.         Z_UInt32                mStringLengthSum;
  145.         Z_Boolean                mProcessingNew;
  146. };
  147.  
  148.  
  149.  
  150. #endif // __ZSTRINGTOOL__
  151.  
  152.  
  153.  
  154.